#ifndef __DAISY_BASE_TOOLS_PLUGINS_MANAGER_IMPL_H__
#define __DAISY_BASE_TOOLS_PLUGINS_MANAGER_IMPL_H__
#include "BaseToolsConfig.h"
#include "Singleton.h"



namespace DAISY {
class DynamicLib;

class _DaisyBaseToolsPrivate PluginsManagerImpl
{

typedef std::vector<DynLibPtr> DynLibList;
public:
	PluginsManagerImpl(void);
	~PluginsManagerImpl(void);

public:
	bool init(void);

	void shutdown(void);

public:
	void clear(void);

	void loadPluginFromFile(const std::string & fileName);
	void loadPlugin(const std::string & pluginName);
	void unloadPlugin(const std::string & pluginName);

private:
	
	DynLibList _pluginLibs;
	//boost::scoped_ptr<DynLibManager> _dynLibManager;
	bool _isInitialised;

	//typedef std::map<std::string, DynLibPtr> DynLibList;
	//DynLibList _libList;
};

}

#endif
